#ifndef SERVER_H
#define SERVER_H

#include <boost/asio.hpp>

using boost::asio::ip::tcp;

struct Re_data {
    uint8_t TargetID;
    float rav1; // 径向距离
    float rav2; // 水平方位角
    float rav3; // 横向速度
    float xyz1; // 横向距离
    float xyz2; // 纵向距离
    float rav4; // 径向速度
};

class Server {
public:
    Server(boost::asio::io_context& io_context, short port);

private:
    void start_accept();
    void handle_accept(const boost::system::error_code& error);
    void start_receive();
    void handle_receive(const boost::system::error_code& error, std::size_t bytes_transferred);
    void handle_write(const boost::system::error_code& error);
    void process_data(const uint8_t* data, std::size_t length);

    tcp::acceptor acceptor_;
    tcp::socket socket_;
    enum { max_length = 1024 };
    uint8_t data_[max_length];
};

#endif // SERVER_H
